<template>
  <div>
    <a-card :bordered="false" style="margin-bottom: 10px">
      <!-- 条件搜索 -->
      <div class="table-page-search-wrapper">
        <a-form :labelCol="labelCol" :wrapperCol="wrapperCol" ref="queryForm">
          <a-row :gutter="32">
            <a-col :span="6">
              <a-form-item label="文件资料名称">
                <a-input
                  v-model="queryParam.docName"
                  placeholder="请输入文件资料名称"
                />
              </a-form-item>
            </a-col>
            <a-col>
              <span
                class="table-page-search-submitButtons"
                style="float: right"
              >
                <a-button type="primary" @click="handleQuery"
                  ><a-icon type="search" />查询</a-button
                >
                <a-button style="margin-left: 8px" @click="resetQuery"
                  ><a-icon type="redo" />重置</a-button
                >
              </span>
            </a-col>
            <!-- <a-col>
              <span
                class="table-page-search-submitButtons"
                style="float: right"
              >
                <a-button type="primary" @click="handleAdd"
                  ><a-icon type="plus" />新增文件资料</a-button
                >
              </span>
            </a-col> -->
          </a-row>
        </a-form>
      </div>
    </a-card>
    <a-card :bordered="false" class="table-card">
      <!-- 增加 -->

      <a-row :gutter="32">
        <a-col :span="4">
          <a-row :gutter="32">
            <a-col :span="22" style="margin: 10px 30px">
              <doc-type-tree
                ref="deptTree"
                :deptOptions="deptOptions"
                :defalutExpandedKeys="expandedKeys"
                @setDataOptionInfo="setDataOptionInfo"
                @select="clickDeptNode"
              />
            </a-col>
          </a-row>
        </a-col>
        <a-col :span="20">
          <a-row :gutter="32">
            <a-col :span="24">
              <biz-doc-model-add-form
                v-if="showAddModal"
                ref="bizDocModelAddForm"
                @ok="getList"
                @close="showAddModal = false"
              />
              <!-- 编辑 -->
              <biz-doc-model-edit-form
                v-if="showEditModal"
                ref="bizDocModelEditForm"
                @ok="getList"
                @close="showEditModal = false"
              />
              <advance-table
                title="文件资料"
                :pagination="{
                  current: queryParam.pageNum,
                  pageSize: queryParam.pageSize,
                  total: total,
                  showSizeChanger: true,
                  showLessItems: true,
                  showQuickJumper: true,
                  showTotal: (total, range) =>
                    `第 ${range[0]}-${range[1]} 条，总计 ${total} 条`,
                  onChange: changeSize,
                  onShowSizeChange: onShowSizeChange,
                }"
                tableKey="base-bizDocModel-index-table"
                rowKey="id"
                size="middle"
                @refresh="getList"
                :columns="columns"
                :data-source="bizDocModelList"
                :loading="loading"
                :format-conditions="true"
                :row-selection="{
                  selectedRowKeys: selectedRowKeys,
                  onChange: onSelectChange,
                }"
              >
                <div class="table-operations" slot="button">
                  <a-button
                    type="primary"
                    @click="handleAdd"
                    v-hasPermi="['biz:bizDocModel:add']"
                  >
                    <a-icon type="plus" />新增
                  </a-button>
                  <!-- <a-button
                    type=""
                    @click="handleExport"
                    v-hasPermi="['biz:bizDocModel:export']"
                  >
                    <a-icon type="download" />导出
                  </a-button> -->
                  <a-button
                    type="danger"
                    v-if="!multiple"
                    :disabled="multiple"
                    @click="handleDelete"
                    v-hasPermi="['biz:bizDocModel:remove']"
                  >
                    <a-icon type="delete" />删除
                  </a-button>
                </div>

                <span slot="operation" slot-scope="{ text, record }">
                  <a
                    target="_blank"
                    :href="record.docUrl"
                    v-hasPermi="['biz:bizDocModel:download']"
                  >
                    下载
                  </a>
                  <a-divider
                    type="vertical"
                    v-hasPermi="['biz:bizDocModel:download']"
                  />
                  <a
                    @click="handleUpdate(record)"
                    v-hasPermi="['biz:bizDocModel:edit']"
                  >
                    修改
                  </a>
                  <a-divider
                    type="vertical"
                    v-hasPermi="['biz:bizDocModel:remove']"
                  />
                  <a
                    @click="handleDelete(record)"
                    v-hasPermi="['biz:bizDocModel:remove']"
                  >
                    删除
                  </a>
                </span>
                <span slot="rowindex" slot-scope="{ index }">
                  {{ index + 1 }}
                </span>
              </advance-table>
            </a-col>
          </a-row>
        </a-col>
      </a-row>
    </a-card>
  </div>
</template>
<script>
import {
  listBizDocModel,
  delBizDocModel,
  exportBizDocModel,
} from "@/api/biz/bizDocModel";
import BizDocModelAddForm from "@/views/biz/docmodel/modules/BizDocModelAddForm";
import BizDocModelEditForm from "@/views/biz/docmodel/modules/BizDocModelEditForm";
import AdvanceTable from "@/components/pt/table/AdvanceTable";
import DocTypeTree from "@/views/biz/doctype/modules/DocTypeTree";
import { listDeptTree } from "@/api/biz/bizDocType";
export default {
  name: "BizDocModel",
  components: {
    BizDocModelAddForm,
    BizDocModelEditForm,
    AdvanceTable,
    DocTypeTree,
  },
  data() {
    return {
      showAddModal: false,
      showEditModal: false,
      // 遮罩层
      loading: true,
      // 选中数组
      ids: [],
      // 选中的主键集合
      selectedRowKeys: [],
      // 选中的数据集合
      selectedRows: [],
      // 高级搜索 展开/关闭
      advanced: false,
      deptOptions: [],
      expandedKeys: [],
      deptCheckedValue: {},

      // 非单个禁用
      single: true,
      // 非多个禁用
      multiple: true,
      // 总条数
      total: 0,
      // label的百分比
      labelCol: { span: 6 },
      // 内容区域的百分比
      wrapperCol: { span: 18 },
      // 文件资料表格数据
      bizDocModelList: [],
      // 查询参数
      queryParam: {
        pageNum: 1,
        pageSize: 10,
        docType: undefined,
      },
      columns: [
        {
          title: "序号",
          dataIndex: "rowindex",
          ellipsis: true,
          align: "center",
          width: "5%",
          scopedSlots: { customRender: "rowindex" },
        },
        {
          title: "文件资料名称",
          dataIndex: "docName",
          ellipsis: true,
          align: "center",
          scopedSlots: { customRender: "docName" },
        },
        // {
        //   title: "文件类型",
        //   dataIndex: "docType",
        //   align: "center",
        //   width: "10%",
        // },
        {
          title: "文件资料类型",
          dataIndex: "typeName",
          align: "center",
          width: "10%",
        },
        {
          title: "创建人",
          dataIndex: "createBy",
          align: "center",
          width: "10%",
        },
        {
          title: "创建时间",
          dataIndex: "createTime",
          align: "center",
          width: "15%",
        },
        {
          title: "操作",
          dataIndex: "operation",
          align: "center",
          width: "15%",
          scopedSlots: { customRender: "operation" },
        },
      ],
    };
  },
  created() {
    this.getList();
    this.getTreeselect();
  },
  methods: {
    /** 查询部门下拉树结构 */
    getTreeselect() {
      listDeptTree("0", 3).then((response) => {
        this.deptOptions = response.data;
        this.getExpandedKeys(this.deptOptions, 3);
      });
    },
    getExpandedKeys(nodes, expandLevel) {
      if (expandLevel > 1) {
        // 最后一层不展开
        if (nodes != null) {
          nodes.forEach((node) => {
            this.expandedKeys.push(node.id);
            expandLevel = expandLevel - 1;
            return this.getExpandedKeys(node.children, expandLevel);
          });
        }
      }
    },
    setDataOptionInfo(treeDataOption) {
      this.deptOptions = treeDataOption;
    },
    clickDeptNode(node) {
      this.queryParam.typeId = node.$options.propsData.eventKey;
      this.deptCheckedValue.ids = node.$options.propsData.eventKey;
      this.tableTitle = node.$options.propsData.label;
      if (node.$options.propsData.dataRef.attributes.deptType === "dept") {
        this.deptCheckedValue = {
          ids: node.$options.propsData.eventKey,
          names: node.$options.propsData.label,
        };
      } else {
        this.deptCheckedValue = {};
      }
      console.log(this.deptCheckedValue);
      this.getList();
    },

    onSelect(v) {},
    /** 查询文件资料列表 */
    getList() {
      this.loading = true;
      listBizDocModel(this.queryParam).then((response) => {
        this.bizDocModelList = response.data.list;
        this.total = response.data.total;
        this.loading = false;
      });
    },
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParam.pageNum = 1;
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.queryParam = {
        pageNum: 1,
        pageSize: 10,
        docType: undefined,
      };
      this.handleQuery();
    },

    /** 翻页操作 */
    onShowSizeChange(current, pageSize) {
      this.queryParam.pageSize = pageSize;
      this.getList();
    },
    /** 翻页操作 */
    onSizeChange(current, size) {
      this.queryParam.pageNum = 1;
      this.queryParam.pageSize = size;
      this.getList();
    },
    /** 翻页操作 */
    changeSize(current, pageSize) {
      this.queryParam.pageNum = current;
      this.queryParam.pageSize = pageSize;
      this.getList();
    },
    /** 翻页操作 */
    onSelectChange(selectedRowKeys, selectedRows) {
      this.selectedRowKeys = selectedRowKeys;
      this.selectedRows = selectedRows;
      this.ids = this.selectedRows.map((item) => item.id);
      this.single = selectedRowKeys.length !== 1;
      this.multiple = !selectedRowKeys.length;
    },
    /** 查询折叠和展开操作 */
    toggleAdvanced() {
      this.advanced = !this.advanced;
    },
    handleAdd() {
      this.showAddModal = true;
      this.$nextTick(() => this.$refs.bizDocModelAddForm.handleAdd());
    },
    handleUpdate(record, ids) {
      this.showEditModal = true;
      this.$nextTick(() =>
        this.$refs.bizDocModelEditForm.handleUpdate(record, ids)
      );
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      var that = this;
      const bizDocModelIds = row.id || this.ids;
      this.$confirm({
        title: "确认删除所选中数据?",
        onOk() {
          return delBizDocModel(bizDocModelIds).then(() => {
            that.onSelectChange([], []);
            that.getList();
            that.$message.success("删除成功", 3);
          });
        },
        onCancel() {},
      });
    },
    /** 导出按钮操作 */
    handleExport() {
      var that = this;
      this.$confirm({
        title: "是否确认导出?",
        content: "此操作将导出当前条件下所有数据而非选中数据",
        onOk() {
          return exportBizDocModel(that.queryParam).then((response) => {
            that.download(response.msg);
            that.$message.success("导出成功", 3);
          });
        },
        onCancel() {},
      });
    },
    handleDownload(url, name) {
      const ele = document.createElement("a");

      ele.setAttribute("target", "_blank"); // 设置下载文件的url地址
      ele.setAttribute("download", name);
      ele.setAttribute("href", url); // 设置下载文件的url地址
      document.body.appendChild(ele);
      ele.click();
      document.body.removeChild(ele);
    },
  },
};
</script>
